昨天向各位提到了user story,也就是將所需的功能,寫成特定的格式,來讓團隊可以遵循敏捷開發的方式,更有效率的完成專案。
而今天我們來講講 Rails 中的MVC架構,依照往常的慣例,開始前來張香吉士吧!
相信各位常常聽到MVC架構,在 Rails 裡利用Model、View、Controller來處理從使用者那邊打過來的要求。簡易圖片為下:
當使用者點下了網頁的一個連結後:
- 相當於像sever發出了一個請求(request)
- routes檔案裡所設定的路徑,去找到相對應的Controller
- Controller根據身上的action把你指到相對應的頁面(View);或是直接請Model更新資料
- 頁面上面所要呈現的資料,就交由Model幫你從資料庫裡撈出來,再傳回給View
- 交由Controller,最後再一次回應(response)給使用者。
上面就是Rails裡的MVC架構的實作方法,若用點菜來做個簡單的比喻:
當我點了一盤菜:
- 相當於我發了一個請求,店員會將請求送往廚房。
- 廚房裡的大廚根據我點的菜,像學徒們下達命令
- 請學徒甲負責去煮出我要的菜。
- 學徒乙幫忙去拿取所需要的材料,交給學徒甲
- 學徒甲煮完後交由大廚,大廚請店員上菜
若我們把上面兩個說明結合起來:
- 店員 = Server或routes
(決定菜單是送往廚房,而不是外面的飲料吧台區)
- 大廚 = Controlle
(將請求分配下去)
- 學徒甲 = View
(負責做出菜餚)
- 學徒乙 = Model
(負責去拿取材料(資料))
這樣的比喻可能沒有達到盡善盡美,若有更好的建議,請各位不吝指教~
不過話又說回來,到底為什麼要搞得那麼麻煩呢?
在學 Rails 之前,我很認真的以為一個頁面就只有一個檔案呢!XD
明天就來解答使用MVC的好處吧!